import { constantRoutes, asyncRoutes } from '@/router'
// 这里是用来处理用户权限的vuex共享数据
const state = {
  // 存放最后生成的静态路由+有权限路由,可以用来渲染菜单
  routes: []
}
const mutations = {
  // 可以修改 state
  setRoutes(state, routes) {
    // 放到 state 当中, 就是可以渲染菜单的数组
    state.routes = [
      // 静态路由
      ...constantRoutes,
      // 筛选后权限路由
      ...routes
    ]
  }
}
const actions = {
  // 筛选有权限的路由
  filterRoutes(context, menus) {
    // 1. 用户的权限标记 被调用时可以传入, menus
    // 2. 所有的动态路由
    // 遍历所有的动态路由, 如果name 存在于权限标记中, 就留下, 如果不存在, 要排除
    // 过滤路由列表, 只有 menus 个人权限标识数组中包含你的name, 才可以留下,否则淘汰
    const routes = asyncRoutes.filter(item => menus.includes(item.name))
    console.log('vuex 当中筛选权限', routes)

    // 调用 mutations 传入过滤后的权限路由
    context.commit('setRoutes', routes)
    return routes
  }
}

export default {
  namespaced: true,
  state,
  mutations,
  actions
}
